草庐IT

c++ - DebugBreak 不中断

全部标签

c - 将 cgo 与 typedef 变量一起使用

由于现有的库和速度,我正在创建一个项目,该项目使用我用C编写的密码学。尝试与Cgo交互时,我在使用C中创建的typedef时遇到了一些问题。下面是一个示例:typedefunsignedcharec_scalar[32];我能够成功创建ec_point变量,并使用接受ec_point*的函数。但是,每当我尝试使用通过普通ec_point传递的函数时,我都会收到错误消息:cannotusepk2(typeC.ec_scalar)astype*C.ucharinargumentto_Cfunc_secret_to_public我似乎找不到可以轻松转换它的方法。我也不想重构我的代码来接受ec

c - 将 C 翻译成 Golang。如何分配内存以匹配 C?

所以我正在翻译我在C中创建的程序。这个程序的目标是简单地从文件中读取矩阵,以稀疏行格式压缩矩阵,然后计算矩阵vector乘积。这是C语言的程序片段。//ReadtheMatrixMarketfileandinitializeaCSRformattedmatrix.csr_load_matrix(fileName,&compressedSparseMatrix);//Setthecorrectvaluestothestructandcreatethememoryallocation.double*x;double*y;x=malloc(compressedSparseMatrix.col

c - 在 libpango 中调用 pango_cairo_font_map_get_default() 时出现 "GLib-GObject-CRITICAL"的原因是什么?

这是一道关于gtk/glib/libpango/libcairo的概念题。让我们直奔问题。我正在用一位前同事用Go编写的旧C库进行包装,在C代码调用的某处pango_cairo_font_map_get_default()获取由libpango维护的默认font_map。包装基本上是从Go域进入C域(外部函数接口(interface))和C端使用pthread创建一个线程最终调用pango_cairo_font_map_get_default。最初,在纯C端一切正常。包装后,C代码卡在调用pango_cairo_font_map_get_default()printf("beforec

c - 通过Cgo访问aerospike C客户端报错

我正在尝试学习Cgo,所以我尝试从Cgo访问aerospike客户端packagemain//#cgoCFLAGS:-g-Wall//#include//#include//#include"aerospike-client-c/examples/put/example_utils.h"import"C"import("unsafe")funcmain(){retvals:=C.putitnew()_=retvals}但我遇到以下错误。(请注意,当我执行make和makerun时,C程序运行成功)。undefinedreferenceto`example_get_opts'./aero

c - Golang cgo *C.int 大小差异

我正在探索CGO,我遇到了一个怪癖,在go运行时中C.int的大小是8个字节,但Cint是4个字节。我知道Goint可以是64位或32位,具体取决于体系结构,而Cint始终是32位。是有一种标准方法可以告诉go对C.int类型使用4个字节吗?我无法找到处理此问题的文档。因此,代码无法按预期运行。它基本上将低端添加到第一个int的高端。它从不引用传递的第二个int。提前致谢。实际输出:0xc00001a0b00xc00001a0b80xc00001a0b00xc00001a0b41990199主.gopackagemain/*intaddNums(int*nums);*/import"C

linux - 捕获中断时抑制终端输出中的 '^C' 字符串

我正在拦截我的Go程序中的中断,并且我正在尝试在发生这种情况时打印出一条日志消息,例如:log.Printf("在终端中按下\rCtrl+C")问题是,这样log.Println的日期部分就丢失了。当没有回车时,像这样:log.Printf("在终端中按下Ctrl+C")然后日期被打印出来,但它被^C字符串前置。有没有办法抑制终端上的^C字符串输出,同时在日志字符串中包含日期? 最佳答案 fmt.Print("\r")log.Println("Ctrl+CpressedinTerminal")

c - Windows DLL 文件的正确构建模式是什么?

这两个步骤:gcc-cmain.cgcc-oa.exemain.oMyThing.dll非常适合制作可以调用MyThing.dll内部方法的Windowsexe。注意没有-c的gccmain.c会给出如下错误:未定义对MyThing_method的引用但是,当尝试使用cgo在Golang程序中使同一个系统工作时,我遇到了与使用没有-c的gcc时相同的undefinedreference错误。我读过:https://github.com/golang/go/wiki/WindowsDLLs并且很想尝试使用syscall.NewLazyDLL但我的问题是我的foo.go文件正在调用C.So

c - 如何将 Go 函数作为参数传递给 C 函数?

我正在尝试将Go函数传递给C函数。类似于:stm:=C.struct_tray_menu{....fn://definitionofmethod....}C.menu_cb(stm);并将其传递给C函数:staticvoidmenu_cb(structtray_menu*item){(void)item;printf("menu:clickedon%s\n",item->text);}我只是想知道如何定义像C.function这样的东西。 最佳答案 主要问题是对c中go定义的误解。所以最终代码看起来像//exportcallOnMe

c - 如何从 C 库中检索 probuf

我正在尝试使用GoogleProtocolBuffers与Go中的C库进行通信,但我无法使其正常工作。我在尝试将protobuf发送到C库时遇到错误我将发布最少的代码来重现我现在面临的错误(我删除了大部分C部分,因为它与此错误无关):/*#cgoCFLAGS:-I@CURRENT_SOURCE_DIR@/../../library/crnd/include-I@CMAKE_CURRENT_BINARY_DIR@/../../library#cgoLDFLAGS:-L@CRND_LIBRARY_PATH@-lcrnd#include#include#include#includetype

unit-testing - 调试在命令行中工作,但在 UI 中未命中断点

我在我的Windows10机器上安装了以下内容:VS代码-版本1.38.1Golang-版本go1.13Delve-版本1.3.0我已经在环境变量中设置了GOROOT和GOPATH。我的GOPATH有以下三个文件夹:来源本包装在src下,我创建了一个基本的sam-app。它会自动创建main_test.go文件。当我进行“调试测试”时,UI中没有出现断点。但是,我可以在命令行中使用dlv进行调试。我在launch.json中尝试了不同的配置。他们都没有工作。在我friend的机器上,即使没有配置,UI调试也能正常工作在VSCode设置中-->节点调试-->自动附加-->我已经设置为'o